package com.cskaoyan.javase.oop1._15access._3why;

/**
 * @description: 为什么使用访问权限控制符？
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

import java.util.Arrays;

/**
 * 访问权限修饰符修饰成员时,就相当于房子加了一把锁,有钥匙才能进入
 * 但是门是可以撬开的,锁是可以砸掉的,门锁不是绝对安全的
 * 相对的,java当中的访问权限修饰符也不是绝对安全的,这些访问权限都是可以破解的
 * 在java当中,自身就提供了"反射"的技术,反射可以任意破解访问权限,包括私有(为所欲为)
 *
 * 所以访问权限修饰符除了硬性的提供访问权限控制外,它还有一些其他的意义
 * 告诉代码的使用者，哪些地方不要触碰，或者说告诉他们该用什么(这是访问权限修饰符更为重要的意义)
 *
 * 举例:
 *      1,对于工具类而言,你不需要也最好不要创建对象,所以可以把工具类的构造方法设为私有
 *          告诉工具类的使用者: 不要创建工具类的对象
 *      2,方法的中间方法,我们在实现一个方法的功能时,经常会去调用另一个方法(这个方法就是为了实现原先方法的功能诞生的)
 *          这个方法不需要给外界使用,应该私有化它
 *      3,虽然不是工具类，但是不希望直接被创建对象，而是通过别的类的方法来创建对象
 *         私有化构造器，在别的类中给出public方法创建对象
 *         这种模式就是大名鼎鼎的“工厂设计模式”，这个创建对象的类，就是对象工厂
 *
 * 访问权限修饰符让类的设计者和类的使用者分开了
 *      对于代码的书写者而言，隐藏代码的具体实现细节，可以很方便的修改代码实现
 *
 */
public class Demo {
    public static void main(String[] args) {

    }

    public static void test(){
        test2();
    }

    //Access can be private
    private static void test2() {
    }
}
